Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I extracted this utility function from #3207 to make TypeScript
isArray()
checks safer by preserving the element type, not assuming they'reany
.TypeScript's built-in types for
Array.isArray()
incorrectly usesany[]
. It should useunknown[]
. The consequence of usingArray.isArray()
is that even if you've narrowed a value to a more specific type, TS will treat it asany
after the check, which effectively disables type-checking.In this PR, as a demonstration, I only converted a few call sites until I hit one that had a cascading effect that triggered a type error near the call site. In
massageFormats()
, thenew Vector3(a[0], a[1], a[2])
became an error since TS could no longer assume thata[i]
wasany
. I addressed it by making themassageFormats()
function parameter type more accurate, and this cascaded to the caller of that, where I added an early return.Relevant issues: